import { isElectron } from './platform'
import wfc from './wfc/client/wfc'

export default class Config {
  // 调试用
  static ENABLE_AUTO_LOGIN = true
  // 是否支持多人音视频通话
  static ENABLE_MULTI_VOIP_CALL = true
  // 是否支持1对1音视频通话
  static ENABLE_SINGLE_VOIP_CALL = true

  static DEFAULT_PORTRAIT_URL =
    ''
  static DEFAULT_GROUP_PORTRAIT_URL =
    ''

  static DEFAULT_ORGANIZATION_PORTRAIT_URL =
    ''
  static DEFAULT_DEPARTMENT_PORTRAIT_URL =
    ''
  static DEFAULT_MESH_PORTRAIT_URL =
    ''
  // 默认缩略图，200 x200，#d3d3d3
  static DEFAULT_THUMBNAIL_URL =
    ''

  // APP SERVER的地址，不能省略http(s)前缀。
  // 默认的app server使用端口是8888，注意端口号别忘记了。
  // 上线建议使用https，使用https更安全。
  static APP_SERVER = 'http://im.uii.net:18793/app'

  // 语音转文字服务地址，如果没有部署语音转文字服务，或者不需要语音转文字的话，可置为 null
  static ASR_SERVER = 'https://app.wildfirechat.net/asr/api/recognize'

  // 组织结构服务地址，如果没有部署组织结构服务，或者不需要组织结构的话，可置为 null
  // 组织结构项目：https://github.com/wildfirechat/organization-platform 或 https://gitee.com/wfchat/organization-platform
  static ORGANIZATION_SERVER = 'https://org.wildfirechat.cn'

  // 野火二维码 scheme，不要修改，如果需要修改的话，所有端都需要一起修改
  static QR_CODE_PREFIX_PC_SESSION = 'wildfirechat://pcsession/'

  // 如果使用的是高级版音视频 SDK，则不需要配置 ICE_SERVER，否则需要配置。<br>
  // 请参考 src/wfc/av/internal/README.MD 切换音视频 SDK <br>
  // turn server 配置，可以添加多个<br>
  // 格式: [uri, 用户名, 密码]，可以添加多个<br>
  // Turn服务配置，用户音视频通话功能，详情参考 https://docs.wildfirechat.net/webrtc/ <br>
  // 我们提供的服务能力有限，总体带宽仅3Mbps，只能用于用户测试和体验，为了保证测试可用，我们会不定期的更改密码。<br>
  // 上线时请一定要切换成你们自己的服务。可以购买腾讯云或者阿里云的轻量服务器，价格很便宜，可以避免影响到您的用户体验。<br>
  static ICE_SERVERS = [
    ['turn:turn.wildfirechat.net:3478', 'wfchat', 'wfchat123'],
  ]
  static LANGUAGE = 'zh_CN'

  static SDK_PLATFORM_WINDOWS = 3
  static SDK_PLATFORM_OSX = 4
  static SDK_PLATFORM_WEB = 5
  static SDK_PLATFORM_WX = 6

  // html5 audio 标签不能播放amr格式的音频，需要将amr格式转换为mp3格式
  // 本服务传入amr音频文件的地址，将音频文件转换为mp3格式，并以application/octet-stream的格式返回
  // 如果语音消息很多，建议使用cdn
  static AMR_TO_MP3_SERVER_ADDRESS = Config.APP_SERVER + '/amr2mp3?path='
  // 文件传输助手ID
  // 不需要文件传输助手时，可以配置为 null
  static FILE_HELPER_ID = 'wfc_file_transfer'

  /**
   * 允许重新编辑多长时间内的撤回消息，单位是秒
   */
  static RECALL_REEDIT_TIME_LIMIT = 60

  static SECRET_CHAT_MEDIA_DECODE_SERVER_PORT = 7982
  // 如果不支持工作台，将其置空即可
  static OPEN_PLATFORM_WORK_SPACE_URL = 'https://open.wildfirechat.cn/work.html'
  static OPEN_PLATFORM_SERVE_PORT = 7983

  // AI 入口地址，如果不需要 AI 功能，置为 null 即可
  static AI_PORTAL_URL = 'https://static.wildfirechat.cn/chatbox-web/index.html'

  // 允许主动加入多人音视频通话
  static ENABLE_MULTI_CALL_AUTO_JOIN = false

  // 需要专业版 im-server 才支持，是否打开语音对讲功能，和对讲机类似的功能，不是发送语音消息
  static ENABLE_PTT = true

  // 是否支持图文混排、文件文本混排，目前之后 pc 端支持，故默认关闭
  static ENABLE_MIX_MEDIA_MESSAGE = false

  // 发送日志命令，当发送此文本消息时，会把协议栈日志发送到当前会话中，为空时关闭此功能。
  static SEND_LOG_COMMAND = '*#marslog#'

  // 是否支持水印
  static ENABLE_WATER_MARK = true

  // 单人音视频通话页面是否显示音视频 SDK 相关提示
  static SHOW_VOIP_TIP = true

  static getWFCPlatform() {
    if (isElectron()) {
      if (window.process && window.process.platform === 'darwin') {
        // osx
        return 4
      } else if (window.process && window.process.platform === 'linux') {
        return 7
      } else {
        // windows
        return 3
      }
    } else {
      // web
      return 5
    }
  }

  static config(options) {
    Object.keys(options).forEach((key) => {
      Config[key] = options[key]
    })
  }

  /**
   * 网络地址重定向
   *
   * 仅当双网环境时，需要特殊处理，默认原样返回
   *
   * @param {string} url
   * @return {string} newUrl
   */
  static urlRedirect(url) {
    if (!url) {
      return url
    }
    // 示例代码
    // 双网环境时，将媒体文件地址切到备选网络
    if (Config.isUseBackupAddress()) {
      url = url.replace('oss.xxxx.com', '192.168.2.19')
    }
    return url
  }

  /**
   * 双网环境时，判断是否是备选网络
   * @return {boolean}
   */
  static isUseBackupAddress() {
    //示例代码
    let host = wfc.getHost()
    if (host === '192.168.2.169' /* backupHost */) {
      return true
    }
    return false
  }

  /**
   * 表情 base 路径
   * @return {string}
   */
  static emojiBaseUrl() {
    // 表情的 baseUrl，一定要求以 / 结尾
    let emojiBaseUrl = 'https://static.wildfirechat.net/twemoji/assets/'
    // 实例代码
    // 双网环境时，将表情地址切换到备选网络
    // if (Config.isUseBackupAddress()) {
    //     emojiBaseUrl = 'https://192.168.2.169/twemoji/assets/';
    // }
    return emojiBaseUrl
  }

  /**
   * 动态表情 base 路径
   * @return {string}
   */
  static stickerBaseUrl() {
    // 动态表情的 baseUrl，一定要求以 / 结尾
    let stickerBaseUrl = 'https://static.wildfirechat.net/sticker/'
    // 实例代码
    // 双网环境时，将动态表情地址切换到备选网络
    // if (Config.isUseBackupAddress()) {
    //     stickerBaseUrl = 'https://192.168.2.169/sticker/';
    // }
    return stickerBaseUrl
  }
}
